Considering a programmable logic device (PLD) as one example of a programmable integrated circuit device, as applications for which PLDs are used increase in complexity, it has become more common to design PLDs to include specialized processing blocks in addition to blocks of generic programmable logic resources. Such specialized processing blocks may include a concentration of circuitry on a PLD that has been partly or fully hardwired to perform one or more specific tasks, such as a logical or a mathematical operation. A specialized processing block may also contain one or more specialized structures, such as an array of configurable memory elements. Examples of structures that are commonly implemented in such specialized processing blocks include: multipliers, arithmetic logic units (ALUs), barrel-shifters, various memory elements (such as FIFO/LIFO/SIPO/RAM/ROM/CAM blocks and register files), AND/NAND/OR/NOR arrays, etc., or combinations thereof.
One particularly useful type of specialized processing block that has been provided on PLDs is a digital signal processing (DSP) block, which may be used to process, e.g., audio signals (such as by Finite Impulse Response (FIR) filtering). Such blocks are also frequently referred to as multiply-accumulate (“MAC”) blocks, because they include structures to perform multiplication operations, and sums and/or accumulations of multiplication results. As used herein and in the claims which follow, a “digital signal processing (DSP) block” is a collection of arithmetic functions units which also may contain some data memory.
For example, PLDs sold by Altera Corporation, of San Jose, Calif., as part of the STRATIX®, ARRIA®, CYCLONE® and HARDCOPY® families include DSP blocks, each of which includes one or more multipliers. Each of those DSP blocks also includes one or more adders and registers, as well as programmable connectors (e.g., multiplexers) that allow the various components of the block to be configured in different ways. In addition, those DSP blocks can be configured for operation at different precisions.
Another type of specialized function that could be performed on a programmable integrated circuit device is that of a processor (e.g., a microprocessor). As used herein and in the claims which follow, a “processor” is a programmable engine that can execute an instruction set.
One known possibility is to configure a processor from general-purpose programmable logic of a programmable integrated circuit device. The configuration of general-purpose programmable logic into a processor may be aided by the availability, from the programmable integrated circuit device manufacturer, or from others, of a “soft processor”—i.e., prerecorded configuration instructions for an efficient configuration of a processor on the programmable integrated circuit device. For example, the aforementioned Altera Corporation provides its customers with a soft processor “core” under the trademark NIOS® II.
Another known possibility is to provide dedicated processor circuitry on a portion of a programmable integrated circuit device. For example, the aforementioned Altera Corporation provides devices that may include dedicated ARM® processors from ARM Ltd., of Cambridge, England.
Both of these approaches may have drawbacks. For example, the soft processor approach consumes a substantial amount of the general-purpose logic resources of a device to instantiate the processor, leaving fewer resources for other user functions without moving to a larger device. On the other hand, while the dedicated processor approach consumes less device area than the soft processor approach, thereby leaving more general-purpose logic resources available on a device of a given size, the dedicated processor still consumes device area that a user, who does not need a processor, might prefer to see used for general-purpose logic resources. Further, some fixed number of dedicated processors would be provided on any particular device, and a user who desires more than that fixed number may not be able to implement additional processors.